package com.leaf.lowcode.sdk.door_controller;

import com.alibaba.fastjson.JSON;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import com.leaf.lowcode.entity.door_control.DoControlRequest;

import java.util.HashMap;
import java.util.Map;


/**
 * API名称：
 * 门禁点反控
 * 分组：
 * 门禁功能接口
 * 提供方名称：
 * 门禁服务
 * qps：
 * 描述：
 * 该接口支持门常开、门常闭、门开和门闭四种操作。门常开操作，门会一直处于开状态，不会自动关闭，执行门闭操作，门才会关上；门常闭操作，门会一直处于关毕状态，普通卡刷卡门不会被打开，执行门开操作，门会打开；门开操作，执行门打开动作，超过门打开时间，门会自动关上；门闭操作，执行关门动作，会立即把门关上。 调用该接口，首先要通过获取门禁点资源列表的接口，获取到门禁点唯一编号，然后根据门禁点唯一编号进行反控操作，该接口支持单个和多个门禁点操作，如果所有门禁点反控操作成功，则返回成功，其他情况都返回失败，在失败的情况下，会按每个门禁点返回对应的错误。
 * 版本支持：
 * V1.0
 *
 * 协议：
 * HTTPS
 * 请求：
 * /api/acs/v1/door/doControl
 * HTTP：
 * POST
 * 安全认证：
 * 认证
 */
public class DoController {
    /**
     * STEP1：设置平台参数，根据实际情况,设置host appkey appsecret 三个参数.
     */
    static {
        ArtemisConfig.host = "10.140.161.12:443";// 平台门户/nginx的IP和端口（必须使用https协议，https端口默认为443）
        ArtemisConfig.appKey = "29544061";
        ArtemisConfig.appSecret = "N1Ims5vjYUTQIGdItUjc";
    }
    /**
     * STEP2：设置OpenAPI接口的上下文
     */
    private static final String ARTEMIS_PATH = "/artemis";

    //门禁点反控
    public static String doControl(DoControlRequest doControlRequest ){
        String doControlDataApi = ARTEMIS_PATH +"/api/acs/v1/door/doControl";
        Map<String,String> path = new HashMap<String,String>(2){
            {
                put("https://",doControlDataApi);
            }
        };
        String body= JSON.toJSONString(doControlRequest);
        String result = ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json");
        return result;
    }
}
